Skip to content

Conversation

@ibalajiarun
Copy link
Contributor

@ibalajiarun ibalajiarun commented Oct 20, 2025

Description

This PR introduces EncryptedPayload variant to TransactionPayload. Currently, the PR disallows any processing of the payload itself and rejects transactions submitted as such. This will be implemented in the future.

The purpose is to allow encrypted transactions submission. The first version of the payload is an enum with three states: Encrypted, Decrypted and FailedDecryption. The user is expected to submit the payload in Encrypted state and the validators agree to move the payload to either Decrypted or FailedDecryption state.


Note

Introduces TransactionPayload::EncryptedPayload with plumbing and rejects encrypted txns across API, VM validation/simulation, consensus quorum store, converters, and filters.

  • Types:
    • Add transaction/encrypted_payload.rs and new variant TransactionPayload::EncryptedPayload with V1 states and helpers (executable[_ref], extra_config, is_encrypted_variant, payload_ref).
    • Update use_case and payload/executable accessors to handle encrypted payloads.
  • API:
    • Reject encrypted transactions on submit and simulate in api/src/transactions.rs.
    • JSON converter (api/types/src/convert.rs) bails on encrypted payloads.
  • VM:
    • Validator now errors on encrypted payloads (FEATURE_UNDER_GATING) and preserves existing script arg gating.
    • Simulation stats and paths assert encrypted txns are not simulated.
  • Consensus (Quorum Store):
    • Batch verification rejects txns with encrypted payloads.
  • Transaction Filters:
    • Extend matchers to inspect decrypted executable from EncryptedPayload::V1 when available; otherwise matchers return false.
  • Tooling:
    • Simulation session labels encrypted txns as "encrypted".

Written by Cursor Bugbot for commit 23bd230. This will update automatically on new commits. Configure here.

@ibalajiarun ibalajiarun marked this pull request as draft October 31, 2025 16:21
@ibalajiarun ibalajiarun force-pushed the balaji/enc-pool-1 branch 10 times, most recently from 9f13a91 to d18f0bf Compare November 11, 2025 15:26
@ibalajiarun ibalajiarun changed the title [encrypted-mempool] Introduce new payload type [types] Introduce new payload for encrypted mempool Nov 11, 2025
@ibalajiarun ibalajiarun marked this pull request as ready for review November 11, 2025 15:38
@ibalajiarun ibalajiarun added the CICD:run-forge-e2e-perf Run the e2e perf forge only label Nov 11, 2025
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions
Copy link
Contributor

✅ Forge suite realistic_env_max_load success on 23bd230a4e3b35c2f77e26419ae076903e336e55

two traffics test: inner traffic : committed: 13294.72 txn/s, latency: 2832.83 ms, (p50: 2700 ms, p70: 2900, p90: 3300 ms, p99: 5700 ms), latency samples: 4951820
two traffics test : committed: 100.03 txn/s, latency: 787.66 ms, (p50: 700 ms, p70: 800, p90: 900 ms, p99: 1300 ms), latency samples: 1700
Latency breakdown for phase 0: ["MempoolToBlockCreation: max: 2.343, avg: 2.205", "ConsensusProposalToOrdered: max: 0.168, avg: 0.166", "ConsensusOrderedToCommit: max: 0.067, avg: 0.062", "ConsensusProposalToCommit: max: 0.232, avg: 0.227"]
Max non-epoch-change gap was: 1 rounds at version 3512727 (avg 0.00) [limit 4], 1.17s no progress at version 4857274 (avg 0.07s) [limit 15].
Max epoch-change gap was: 0 rounds at version 0 (avg 0.00) [limit 4], 0.25s no progress at version 2077325 (avg 0.25s) [limit 16].
Test Ok

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD:run-forge-e2e-perf Run the e2e perf forge only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants